package cn.edu.cuit.calculator.utils;

import org.json.JSONObject;

import java.io.*;
import java.util.Map;


public class JsonUtil {

    /**
     * 往json文件中写入数据
     *
     * @param jsonPath json文件路径
     * @param inMap    Map类型数据
     * @param flag     写入状态，true表示在文件中追加数据，false表示覆盖文件数据
     * @return 写入文件状态  成功或失败
     */
    public static Boolean writeJson(String jsonPath, Map<String, String> inMap, boolean flag) {
        // Map数据转化为Json，再转换为String
        String data = new JSONObject(inMap).toString();
        File jsonFile = new File(jsonPath);
        try {
            // 文件不存在就创建文件
            if (!jsonFile.exists()) {
                jsonFile.createNewFile();
            }
            FileWriter fileWriter = new FileWriter(jsonFile.getAbsoluteFile(), flag);
            BufferedWriter bw = new BufferedWriter(fileWriter);
            bw.write(data + ",");
            bw.close();
            return true;
        } catch (IOException e) {
            return false;
        }
    }

    /**
     * 读取json文件数据
     *
     * @param jsonPath json文件路径
     * @return 字符串
     */
    public static String readJson(String jsonPath) {
        File jsonFile = new File(jsonPath);
        String result = "";
        try {
            FileReader fileReader = new FileReader(jsonFile);
            BufferedReader reader = new BufferedReader(fileReader);
            StringBuilder sb = new StringBuilder();
            while (true) {
                int ch = reader.read();
                if (ch != -1) {
                    sb.append((char) ch);
                } else {
                    break;
                }
            }
            fileReader.close();
            reader.close();
            result = sb.toString();
            return "[" + result.substring(0, result.length()-1) + "]";
        } catch (IOException e) {
            return "[]";
        }
    }

}